from pynput import keyboard
from pynput.keyboard import Controller, Key, Listener

from item_Stu import Stu
import keyboard
list_Stu = []


# 键盘按压,pass

def on_press(key):
    pass


# 检测是否释放ESC

def on_release(key):
    if key == Key.esc:
        print('ESC be pressed!')
        return False


def start_listen():
    with Listener(on_press=on_press, on_release=on_release) as listener:
        listener.join()



def case_1():
    print("------------------新生录入系统--------------------------------------------------------")
    while True :
        print("请输入新学生的姓名，性别，年龄：(输入回车退出添加系统)")
        name = input("姓名：")
        if name == '' :
            break
        age = input("年龄：")
        if age == '' :
            break
        gender = input("性别：")
        if gender == '' :
            break
        flag =0
        if len(list_Stu)!=0 :
            for s in list_Stu :
                if s.name == name :
                    flag =1
                    break
        if flag == 0:
            stu = Stu(name=name, age=age, gender=gender)
            list_Stu.append(stu)
            print("添加成功")
        else:
            print("已存在用户名，添加失败")

        print("当前录入学生名册：")
        for s in list_Stu :
            print(f'学生姓名：{s.name}，学生学号：{s.sid}',"  ",end="\n")


def case_2():
    print("------------------学生信息修改系统--------------------------------------------------------")
    print("根据学号修改学员信息：")
    id = input("请输入学员学号：")
    flag =0
    if len(list_Stu)!= 0 :
        for s in list_Stu:
            if s.sid == int(id) :
                flag =1
                if flag == 1:
                    print("学号正确，请输入修改信息：(若不修改某个属性则回车跳过)")
                    name = input("姓名修改为：")
                    if name != '' :
                        flag =2
                        s.name = name
                    age = input("年龄修改为：")
                    if age != '' :
                        flag = 2
                        s.age = age
                    gender = input("性别修改为：")
                    if gender != '' :
                        flag = 2
                        s.gender = gender
                break

        if flag == 0 :
            print("没找到该学号的学生")

        elif flag ==2 :
            print("修改成功")

        else:
            print("无修改信息")
    else:
        print("当前没有学生录入系统")

def case_3() :
    print("------------------学生信息删除系统--------------------------------------------------------")
    print("根据学号删除学员信息：")
    id = input("请输入学员学号：")
    flag = 0
    if len(list_Stu) != 0:
        for s in list_Stu:
            if s.sid == int(id):
                flag = 1
                if flag == 1:
                    key = input("学号正确，输入回车删除该学生信息：(如不删除则按下键盘esc)")
                    start_listen()
                    flag =2
                    if key == '':
                        flag = 1
                        list_Stu.remove(s)


                break

        if flag == 0:
            print("没找到该学号的学生")

        elif flag == 2:
            print("取消删除")

        else:
            print("删除成功")
    else:
        print("当前没有学生录入系统")

def case_4():
    print("------------------学生信息删除系统--------------------------------------------------------")
    print("根据姓名删除学员信息：")
    name = input("请输入学员姓名：")
    flag = 0
    if len(list_Stu) != 0:
        for s in list_Stu:
            if s.name == name:
                flag = 1
                if flag == 1:
                    key = input("姓名正确，输入回车删除该学生信息：(如不删除则输入其他)")
                    start_listen()
                    flag = 2
                    if key == '':
                        flag = 1
                        list_Stu.remove(s)
                break

        if flag == 0:
            print("没找到该姓名的学生")

        elif flag == 2:
            print("取消删除")

        else:
            print("删除成功")
    else:
        print("当前没有学生录入系统")
def case_5():
    print("------------------学生信息查询系统--------------------------------------------------------")
    print("根据学号查询学员信息：")
    id = input("请输入学员学号：")
    flag = 0
    if len(list_Stu) != 0:
        for s in list_Stu:
            if s.sid == int(id):
                flag = 1
                if flag == 1:
                    key = input("学号正确，输入回车查询该学生信息：(如不删除则输入其他)")
                    start_listen()
                    flag = 2

                    if key == '':
                        flag=1
                        print(f'该学生的信息：姓名：{s.name},年龄：{s.age},性别：{s.gender}\n')


                break

        if flag == 0:
            print("没找到该学号的学生")

        elif flag == 2:
            print("取消查询")

        else:
            print("查询成功")
    else:
        print("当前没有学生录入系统")
def case_6():
    print("------------------学生信息查询系统--------------------------------------------------------")
    print("根据姓名查询学员信息：")
    name = input("请输入学员姓名：")
    flag = 0
    if len(list_Stu) != 0:
        for s in list_Stu:
            if s.name == name:
                flag = 1
                if flag == 1:
                    key = input("姓名正确，输入回车查询该学生信息：(如不删除则输入其他)")
                    start_listen()
                    flag = 2
                    if key == '':
                        flag =1
                        print(f'该学生的信息：学生id:{s.sid},姓名：{s.name},年龄：{s.age},性别：{s.gender}\n')
                    if key ==  b'\x1b' :
                        flag =2


                    break

        if flag == 0:
            print("没找到该姓名的学生")

        elif flag == 2:
            print("取消查询")

        else:
            print("查询成功")
    else:
        print("当前没有学生录入系统")
def case_7():
    print("------------------学生信息查询系统--------------------------------------------------------")
    print("显示所有录入系统的学生信息：\n")
    if len(list_Stu)!= 0 :
        print("***********************************************************************************\n")
        for s in list_Stu :
            print(f'学生ID：{s.sid},学生姓名：{s.name},学生年龄：{s.age},学生性别：{s.gender}',end='\n')
        print("***********************************************************************************\n")

def menu() :
    print("****************************************")
    print("*				学生管理系统			 *")
    print("*  	    1. 添加新学生信息              *")
    print("* 	    2. 通过学号修改学生信息		 *")
    print("*		3. 通过学号删除学生信息		 *")
    print("*		4. 通过姓名删除学生信息		 *")
    print("* 	    5. 通过学号查询学生信息          *")
    print("*		6. 通过姓名查询学生信息          *")
    print("*		7. 显示所有学生信息             *")
    print("*		8. 退出系统			  		 *")
    print("****************************************")



    select_op = input("输入编号选择操作：")
    while select_op!=8 :
        if select_op == "1":
            case_1()
        elif select_op == "2":
            case_2()
        elif select_op == "3":
            case_3()
        elif select_op == "4":
            case_4()
        elif select_op == "5":
            case_5()
        elif select_op == "6":
            case_6()
        elif select_op == "7":
            case_7()
        elif select_op == "8":
            break
        else:
            break
        print("****************************************")
        print("*				学生管理系统			 *")
        print("*  	    1. 添加新学生信息              *")
        print("* 	    2. 通过学号修改学生信息		 *")
        print("*		3. 通过学号删除学生信息		 *")
        print("*		4. 通过姓名删除学生信息		 *")
        print("* 	    5. 通过学号查询学生信息          *")
        print("*		6. 通过姓名查询学生信息          *")
        print("*		7. 显示所有学生信息             *")
        print("*		8. 退出系统			  		 *")
        print("****************************************")
        select_op = input("输入编号选择操作：")




if __name__ == '__main__':
    menu()